// ########### 🚌🚌 1. 资源  memory cpu ###########

// const fs = require('fs')
// Buffer.alloc(2000) // 缓冲区

// console.info(process.memoryUsage())
/**
{
    rss: 23654400, // 常驻内存
    heapTotal: 4247552, // 堆值,总大小
    heapUsed: 2313184, // 实际使用的内存
    external: 788505, // 扩展的内存: 默认引入资源占据
    arrayBuffers: 9382 // 独立的空间
}
 */

// console.info(process.cpuUsage())
/**
 * { user: 15000, system: 31000 }
 */

// ########### 🚌🚌 2. 运行环境: 运行目录, node环境, CPU架构, 用户环境, 系统平台 ###########
console.info(process.cwd()) // C:\Leslie\NodeJs\1-NodeJs-Core-Module\codes
console.info(process.version) // v12.18.0
// console.info(process.versions)
/**
    {
    node: '12.18.0',
    v8: '7.8.279.23-node.37',
    uv: '1.37.0',
    zlib: '1.2.11',
    brotli: '1.0.7',
    ares: '1.16.0',
    modules: '72',
    nghttp2: '1.41.0',
    napi: '6',
    llhttp: '2.0.4',
    http_parser: '2.9.3',
    openssl: '1.1.1g',
    cldr: '37.0',
    icu: '67.1',
    tz: '2019c',
    unicode: '13.0'
    }
 */
// console.info(process.arch) // x64
// console.info(process.env.NODE_ENV) // 环境: dev / production
// console.info(process.env.PATH)
/**
 * 本机配置的系统环境变量
 * C:\Python27\;
 * C:\Python27\Scripts;
 * C:\Windows\system32;
 * C:\Program Files (x86)\Yarn\bin;
 * C:\Users\leslie\AppData\Roaming\npm;
 * C:\Users\leslie\AppData\Roaming\nvm;
 * C:\Program Files\nodejs;
 * ....
 */

// console.info(process.env.USERPROFILE) // C:\Users\leslie 管理员目录
// console.info(process.platform) // win32

// ########### 🚌🚌 3. 运行状态: 启动参数, PID, 运行时间 ###########
// console.info(process.argv)
// console.info(process.pid) // 进程id

// console.info(process.uptime())

// setTimeout(() => {
//   console.info(process.uptime()) // 0.048994801 整体
// }, 3000)

/**
    [
        'C:\\Program Files\\nodejs\\node.exe', : node 启动程序所在目录
        'C:\\Leslie\\NodeJs\\1-NodeJs-Core-Module\\codes\\9-process.js', // 当前执行文件的文件
        '1', // 命令行给的 参数 1
        '2'  // 命令行给的 参数 2
    ]
 */

// ########### 🚌🚌 4. 事件监听 ###########
// process.on('beforeExit', (code) => {
//   console.info('process is beforeExit', code)
// })

// process.on('exit')内部只能写同步代码,异步代码不会执行,如里面的 setTimeout 不会执行
// process.on('exit', (code) => {
//   console.info('process is exit', code)
//   setTimeout(() => {
//     console.info('exit time out')
//   }, 1000)
// })

// 手动退出当前线程, 不走标准流程
// process.exit() // 后面的代码不会再被执行

// console.info('code is execute done.')

// ########### 🚌🚌 5. 标准输出(stdout) 输入(stdin) 错误 ###########
// stdout 可写流
// console.info = function (data) {
//   process.stdout.write('---' + data + '\n')
// }

// console.info(11)
// console.info(22)

// const fs = require('fs')
// // 创建一个可读流,通过 管道 pipe 交给下一个对象处理(标准输出)
// fs.createReadStream('9-data.txt').pipe(process.stdout)

// 输入(stdin): 面板输入交给输出
// process.stdin.pipe(process.stdout)

process.stdin.setEncoding('utf-8')

// readable是内置的事件
process.stdin.on('readable', () => {
  let chunk = process.stdin.read() // 输入
  if (chunk !== null) {
    process.stdout.write('stdout data ' + chunk) // 输出
  }
})
